package com.administrator.scoreManageSys.service.impl;

import com.administrator.scoreManageSys.entity.system.User;
import com.administrator.scoreManageSys.mapper.organization.OrganizationMapper;
import com.administrator.scoreManageSys.mapper.student.StudentMapper;
import com.administrator.scoreManageSys.service.StudentService;
import com.administrator.scoreManageSys.utils.Md5Utils;
import com.administrator.scoreManageSys.utils.ResultUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

import static com.administrator.scoreManageSys.system.SystemConstant.DEFAULT_PASSWORD;
import static com.administrator.scoreManageSys.system.SystemConstant.MD5_KEY;

/**
 * @author zsh
 * @date 2022/04/01/ 10:12
 */
@Service
public class StudentServiceImpl implements StudentService {
    @Resource
    private OrganizationMapper organizationMapper;
    @Resource
    private StudentMapper studentMapper;
    @Resource
    private ResultUtils resultUtils;
    @Resource
    private Md5Utils md5Utils;
    /**
     * 获取学生信息列表
     *
     * @param pageNum 当前页
     * @param pageSize 页大小
     * @param classId 查询学生班级
     * @param name 学生姓名
     * @return  学生信息列表
     */
    @Override
    public JSONObject list(Integer pageNum, Integer pageSize, Long classId, String name) {
        PageHelper.startPage(pageNum, pageSize);
        List<User> userList = studentMapper.list(classId,name);
        PageInfo<User> pageInfo = new PageInfo<>(userList);
        return resultUtils.resultSuccessData(pageInfo);
    }

    /**
     * 重设密码
     *
     * @param id 重设密码用户
     * @return 操作结果
     */
    @Override
    public JSONObject resetPassword(Long id) {
        String password = md5Utils.encrypt(DEFAULT_PASSWORD + MD5_KEY);
        //修改用户密码
        organizationMapper.changePassword(id, password);
        return resultUtils.resultSuccess();
    }

    /**
     * 修改学生信息
     *
     * @param name                用户姓名
     * @param phone               用户手机号
     * @param roleId              用户角色id
     * @param address             现居住地址
     * @param id                  用户id
     * @param identity            用户身份  0:管理员 / 1:学生 /2:老师
     * @param sex                 性别 1/2 男/女
     * @param identityCard        用户身份证号
     * @param idEntityCardAddress 用户身份证地址
     * @param admissionTime       入学时间
     * @return 操作结果
     */
    @Override
    public JSONObject userStudentUpdate(String name, Long phone, Long roleId, String address, Long id, Long identity, Long sex, String identityCard, String idEntityCardAddress, Long admissionTime) {
        User user = new User(id, name, phone, roleId, address,identity,sex,identityCard,idEntityCardAddress,admissionTime);
        //修改用户信息
        studentMapper.userStudentUpdate(user);
        return resultUtils.resultSuccess();
    }

    /**
     * 查询自己的成绩
     *
     * @param userId   学生id
     * @param season   查询考季
     * @param subject  查询科目
     * @param pageSize 页大小
     * @param pageNum  当前页
     * @return 成绩列表
     */
    @Override
    public JSONObject getMyExamList(Long userId, Long season, Long subject, Integer pageSize, Integer pageNum) {
        PageHelper.startPage(pageNum, pageSize);
        List<Map<String, Object>> userList = studentMapper.getMyExamList(userId,season,subject);
        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(userList);
        return resultUtils.resultSuccessData(pageInfo);
    }

    /**
     * 获取学生详情
     *
     * @param id 学生id
     * @return 详情
     */
    @Override
    public JSONObject getUserDetail(Long id) {
        JSONObject user= organizationMapper.getUserDetail(id);
        return resultUtils.resultSuccessData(user);

    }
}


